C++ 性能优化实践
📚 共计 30 章节
01
性能优化概述
为什么要优化、优化的代价与收益、性能分析工具简介 (perf, gprof, Valgrind)
工具
基础
02
编译器优化基础
编译器优化级别 (-O1, -O2, -O3, -Os)、常见优化选项、查看汇编代码
编译
汇编
03
数据结构选择
数组 vs 链表、哈希表 vs 平衡树、缓存友好性对性能的影响
数据结构
缓存
04
内存管理优化
new/delete 与 malloc/free 开销、对象池与内存池、避免内存碎片
内存
池
05
字符串处理优化
std::string 的 COW 与 SSO、避免不必要的拷贝、string_view
字符串
C++17
06
循环优化
循环展开、循环合并、循环交换、减少分支预测失败
循环
分支
07
函数调用优化
内联函数、尾递归优化、减少虚函数调用开销
函数
虚函数
08
分支预测优化
likely/unlikely 宏、减少复杂条件、查找表替代分支
分支
预测
09
缓存优化
数据局部性原理、缓存行对齐、预取指令 (__builtin_prefetch)
缓存
预取
10
多线程基础
std::thread 使用、线程创建/销毁开销、线程池设计
多线程
线程池
11
锁优化
互斥锁 vs 读写锁、自旋锁、无锁编程简介 (CAS)
锁
无锁
12
原子操作与内存序
std::atomic 使用、memory_order 详解、避免 ABA 问题
原子
内存序
13
并发数据结构
无锁队列、无锁栈、读写分离设计模式
并发
无锁
14
SIMD 指令集入门
SSE/AVX 简介、编译器自动向量化、手写 SIMD 代码
SIMD
向量化
15
内联汇编
何时需要内联汇编、基本语法、寄存器约束
汇编
内联
16
性能分析工具实战
使用 perf 定位热点函数、火焰图分析性能瓶颈
perf
火焰图
17
代码生成与模板元编程
模板展开对性能的影响、constexpr 与编译期计算
模板
编译期
18
移动语义与完美转发
右值引用、移动构造函数、std::move 与 std::forward 正确使用
移动语义
右值
19
异常与性能
异常处理开销、RTTI 开销、如何禁用异常
异常
RTTI
20
I/O 优化
减少系统调用、内存映射文件 (mmap)、缓冲区合理设置
I/O
mmap
21
网络编程优化
epoll vs select、零拷贝技术 (sendfile)、连接池设计
网络
epoll
22
数据库访问优化
连接池、批量操作、预处理语句
数据库
连接池
23
算法优化
选择合适时间复杂度、空间换时间策略、近似算法
算法
复杂度
24
数值计算优化
避免浮点运算陷阱、使用定点数、数学库选择
数值
浮点
25
编译时优化
头文件依赖管理、预编译头、LTO (链接时优化)
编译
LTO
26
性能测试与基准测试
Google Benchmark 使用、统计显著性、避免微基准陷阱
基准测试
Google
27
大型项目性能优化案例
游戏引擎优化、高频交易系统优化、数据库内核优化
案例
实战
28
性能与可维护性的平衡
代码可读性 vs 性能、配置化优化、性能回归测试
可维护性
回归
29
未来趋势:C++20/23
协程、模块、概念对性能的影响
C++20
协程
30
综合实战
实际项目性能分析、定位瓶颈、实施优化、验证效果
实战
项目